package erwiki.ui.app.admin.handlers.customize;

import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.workbench.IWorkbench;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Shell;

import erwiki.admin.internal.InitializeLoginDb;
import erwiki.api.exceptions.WikiSecurityException;

/**
 * ?Workaround?</br>
 * Инициализация учетной записи администратора ElWiki.
 * 
 * @author vfedorov
 */
public class CreateAdminLoginHandler {

	@Execute
	public void execute(IWorkbench workbench, Shell shell) {
		if (InitializeLoginDb.isAdminExists()) {
			MessageDialog.openWarning(shell, "Предупреждение", "Администратор уже существует");
		} else {
			try {
				String adminPassword = InitializeLoginDb.createAdministrator();
				String pwd = ((adminPassword != null) ? adminPassword : "...");
				MessageDialog.openInformation(shell, "Информация", "Пароль администратора: " + pwd);
			} catch (WikiSecurityException e) {
				MessageDialog.openError(shell, "Ошибка",
						"Ошибка создания учетной записи администратора.\n" + e.getMessage());
			}
		}
	}

}
